home *** CD-ROM | disk | FTP | other *** search
/ ASME's Mechanical Engine…ing Toolkit 1997 December / ASME's Mechanical Engineering Toolkit 1997 December.iso / basic / sweep5.lzh / SWEEP.BAS next >
BASIC Source File  |  1985-11-21  |  3KB  |  99 lines

  1. 10 '  AUDIO FREQUENCY ANALYZER [SWEEP]
  2. 20 ' ---------------------------------
  3. 30 '  This system will sweep through a frequency range and
  4. 40 '  display the responce to each frequency.
  5. 50 '
  6. 60 CLS:OUT 1923,137:DIM FL(14),CC(14),SL(14),FCL(14)
  7. 70 PRINT:PRINT"        AUDIO FREQUENCY ANALYZER"
  8. 80 '
  9. 90 ' Output the pulse to start the ADC conversion.
  10. 100 ' Also, park the VCO at the lowest frequency.
  11. 110 '
  12. 120 OUT 1921,128:OUT 1921,31:OUT 1920,0
  13. 130 '
  14. 140 ' READ THE CALIBRATION DATA FROM THE DATA STATEMENTS.
  15. 150 '
  16. 160 FOR I= 0 TO 14
  17. 170 READ FL(I),CC(I),SL(I),FCL(I)
  18. 180 NEXT
  19. 190 KEY OFF:IX=5
  20. 200 '
  21. 210 ' Input the lower and upper bounds of the range to sweep.
  22. 220 '
  23. 230 LOCATE 10,15:INPUT "FREQ LOW = ";FL
  24. 240 LOCATE 12,15:INPUT "FREQ HIGH=";FH
  25. 250 FD=(FH-FL)/72
  26. 260 CLS
  27. 270 IF (FD>0) AND (FH<30000) AND (FL>8)  THEN GOTO 330
  28. 280 CLS:LOCATE 3,30:PRINT"BAD FREQUENCY LIMITS"
  29. 290 GOTO 230
  30. 300 '
  31. 310 ' Print the axis on the screen.
  32. 320 '
  33. 330 FOR I = 1 TO 22:PRINT " -":NEXT:PRINT " ";
  34. 340 FOR I = FL+FD*3 TO FH STEP FD*6:PRINT USING " #####";I;:NEXT
  35. 350 FOR F = FL TO FH STEP FD
  36. 360 '
  37. 370 ' CONVERT THE FREQUENCY [F] FROM HERTZ TO CAPACITOR CODE AND
  38. 380 '   FINE FREQUENCY CODE.
  39. 390 '
  40. 400 I=1
  41. 410 IF F>FL(I) THEN I=I+1:GOTO 410
  42. 420 I=I-1
  43. 430 DF=INT(.5+(F-FL(I))*SL(I)+FCL(I))
  44. 440 '
  45. 450 ' If an incorrect code appears, then abort the run and start over.
  46. 460 '
  47. 470 IF DF<0 THEN OUT 1921,0:OUT 1920,255:GOTO 230
  48. 480 OUT 1920,DF  :OUT 1921,CC(I):II=0
  49. 490 '
  50. 500 '  Delay to let the stereo settle to it's responce.
  51. 510 '
  52. 520 FOR T = 1 TO 50:I=I+1:NEXT
  53. 530 IF F=FL THEN FOR I = 1 TO 300: T=T+3: NEXT
  54. 540 '
  55. 550 ' Take eight samples and average.
  56. 560 '
  57. 570 FOR I=1 TO 8
  58. 580 II=II+INP(1922)
  59. 590 NEXT
  60. 600 II=II/8
  61. 610 '
  62. 620 ' Convert the data to a range of 1 to 22 for the screen.
  63. 630 '
  64. 640 I=INT(22-(255-II)/4)
  65. 650 X$="+"
  66. 660 '
  67. 670 ' Check for out-of-range conditions
  68. 680 '
  69. 690 IF I<1  THEN I=1  :X$="^"
  70. 700 IF I>22 THEN I=22 :X$="#"
  71. 710 '
  72. 720 ' Place the mark on the screen.
  73. 730 '
  74. 740 LOCATE I,IX:  PRINT X$;
  75. 750 IX=IX+1
  76. 760 NEXT
  77. 770 OUT 1921,31:OUT 1920,0
  78. 780 LOCATE 23,1:END
  79. 790 ' --------------------
  80. 800 ' - CALIBRATION DATA -
  81. 810 ' --------------------
  82. 820 '  FREQ LOW, CAP CODE, SLOPE, FINE FREQ LOW
  83. 830 '
  84. 840 DATA     8, 31, 9.1667 ,   0
  85. 850 DATA    21, 30, 6.7857 ,  70
  86. 860 DATA    36, 19, 2.5294 ,  31
  87. 870 DATA    71,  7, 2.1111 ,  90
  88. 880 DATA   126, 22, 0.6081 ,  15
  89. 890 DATA   201, 22, 0.5960 ,  61
  90. 900 DATA   301, 16, 0.4699 ,  78
  91. 910 DATA   553,  6, 0.1521 ,  23
  92. 920 DATA  1005,  2, 0.1184 ,  58
  93. 930 DATA  2009,  4, 0.04332,  26
  94. 940 DATA  4001,  4, 0.04814, 112
  95. 950 DATA  6670,  0, 0.01490,   0
  96. 960 DATA  7785,  0, 0.01001,  16
  97. 970 DATA 14280,  0, 0.01004,  81
  98. 980 DATA 30000,  0, 0.00000,   0
  99.